Zurück in DatenbankentwicklungWeiter in DatenbankentwicklungEinzelsatzverarbeitung unter DAO ?

Das Formular FrmZuordnung aus Testverwaltung.mdb enthält rechts oben das Textfeld Zeitbudget. Ein Klick auf fügt einen voreingestellten Wert in Minuten ein. Die Voreinstellung ist gleich der Zahl der Musterlösungspaare unter der Überschrift Lösung.


Ein Klick auf die Schaltfläche startet die Ereignisprozedur BtnVoreinstellenZeitbudget_Click(). Diese berechnet den Defaultwert in einer einfachen Form der DAO-Satzverarbeitung aus dem Recordset rstZOLösungen:

Füge einen Defaultwert für das Zeitbudget ein
  Zähle die Sätze mit dem laufenden Fragenschlüssel von ZUORDNUNGS_LÖSUNGEN
  Falls Ergebnis > 0
    trage die Voreinstellung ein

Die folgende Prozedur mischt mengen- und satzorientierte Zugriffe: Zuerst erstellt eine mengenorientierte SQL-Abfrage den Recordset rstZOLösungen. Dieser enthält lediglich einen einzigen Satz mit dem gesuchten Defaultwert. Die With-Klammer weist diesen Wert der Variablen voreingestelltesZeitbudget zu und schliesst den Recordset.

'--- Zeitbudget voreinstellen 
'    (Zeitbudget = Zahl der Lösungspaare der Zuordnungsaufgabe in Minuten)

Private Sub BtnVoreinstellenZeitbudget_Click()
  Dim rstZOLösungen As Recordset
  Dim lfFragenschlüssel As Long
  Dim voreingestelltesZeitbudget As Single

  '-- Fragenschlüssel = Datenquelle des (geöffneten) Formulars FrmAllgemeines
  lfFragenschlüssel = [Forms]![FrmAllgemeines]![Fragenschlüssel]

  '-- Öffne Recordset aus dem einzigen Satz. Dieser nennt im Attribut Zahl_ZOLösungen die
  '   Zahl der Sätze mit dem Wert lfFragenschlüssel der Tabelle ZUORDNUNGS_LÖSUNGEN
  Set rstZOLösungen = CurrentDb.OpenRecordset("SELECT " & _
    "Count(Fragenschlüssel) " & _
    "AS [Zahl_ZOLösungen] FROM ZUORDNUNGS_LÖSUNGEN " & _
    "WHERE Fragenschlüssel=" & lfFragenschlüssel & ";")

  '-- Position auf dem ersten (und einzigen) Satz der Ergebnistabelle des obigen SQL-Befehls
  With rstZOLösungen
    voreingestelltesZeitbudget = !Zahl_ZOLösungen
    .Close
  End With
  Set rstZOLösungen = Nothing

  '-- Zuordnungslösung bereits eingetragen?
  If voreingestelltesZeitbudget > 0 Then	'Eintrag vorhanden
    Me![TxfZeitbudget] = voreingestelltesZeitbudget
  Else
    MsgBox "Keine Voreinstellung berechenbar. Tragen Sie zuerst die Lösung ein", _
      vbOKOnly + vbExclamation, "Voreinstellung"
  End If
End Sub

Erläuterungen zur VBA-Syntax


Satzorientierte Verarbeitung unter DAO
Satzverarbeitung in einer Schleife
Hilfethema von MS Access MS Access-Steuerelemente